# 函数 也可视为数据类型
def add(a, b):
    return a + b


fun = add
print('%0X' % id(add))
print('%0X' % id(fun))

# lambda
# lambda 参数列表: 表达式
lambda a, b: a + b  # 匿名函数，用于简单的函数
# 调用方式
# 1、给它定义一个名字（很少这样用）
lam_add = lambda a, b: a + b
print(lam_add(1, 2))


# 2、当做参数传给给另一个函数使用
def calc(a, b, func):
    return func(a, b)


x1 = calc(1, 6, lambda a, b: a + b)  # 相当于 x1 = calc(1, 6, lam_add)
x2 = calc(9, 7.2, lambda a, b: a - b)
x3 = calc(4, 5.1, lambda a, b: a * b)
x4 = calc(7.2, 8, lambda a, b: a / b)
print(x1, x2, x3, x4)
